/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ventas.dao;
import com.ventas.bean.Categoria;
import com.ventas.bean.Cliente;
import com.ventas.bean.Producto;
import com.ventas.service.ClienteInterfaz;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author jesus
 */
public class ClienteDao implements ClienteInterfaz{

    @Override
    public List getClienteLista() throws Exception {
       Connection cn =null;
        CallableStatement cstm= null;
        ResultSet rst = null;
        List<Cliente> lstCliente= null;
        
        try {
            cn = Conexion.getConexion();
            cstm = cn.prepareCall("call getClienteLista()");
            rst=cstm.executeQuery();
            lstCliente = new ArrayList<Cliente>();
            while (rst.next()) {                
                Cliente cliente = new Cliente();
                cliente.setCli_id(rst.getInt(1));
                cliente.setCli_razSocial(rst.getString(2));
                cliente.setCli_dirFiscal(rst.getString(3));
                cliente.setCli_ruc(rst.getString(4));
                cliente.setCli_estado(rst.getInt(5));
                lstCliente.add(cliente);                        
            }
            
                    
        } catch (Exception e) {
            System.out.println("Error Lista lenguaje"+e.getMessage());
        }
        return  lstCliente;
    }

    @Override
    public boolean clienteRegistro() throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public int getCantidadClientes() throws Exception {
         int count = 0;
        Connection cn = null;
        try {
            cn = Conexion.getConexion();
            String sql = "select count(*) from cliente";
            CallableStatement cstm = cn.prepareCall(sql);
            ResultSet rs = cstm.executeQuery();
            while (rs.next()) {
                count = rs.getInt(1);
            }
            System.out.println("Exito cargaListaUltimosProductosDao");
        } catch (Exception e) {
            System.out.println("Error cargaListaUltimosProductosDao" + e.getMessage());
            e.printStackTrace();
        }
        return count;
    }

    
    //--------------------------------------
    
    
    
    
    @Override
    public boolean IngresoClienteDao(Cliente cliente) throws Exception {
      Connection con=null;
        CallableStatement cstm=null;
        boolean resultado=false;
        try {
            con=Conexion.getConexion();
            String sql="call pa_ingresocliente(?,?,?);";
            cstm=con.prepareCall(sql);
            
            cstm.setString(1,cliente.getCli_razSocial());
            cstm.setString(2,cliente.getCli_dirFiscal());
            cstm.setString(3,cliente.getCli_ruc());        
           
            System.out.println();
            //tu sp esta mal , esta bien , el estado lo puse automaticoo! 
            cstm.execute();
            resultado=true;
        } 
        catch (Exception e) {
            resultado=false;
            System.out.println("Error de Ingreso"+e.getMessage());
            e.printStackTrace();
        }
        return resultado;
        
    }

    @Override
    public List listadoClienteActivos() throws Exception {
         List listadoClientes = new ArrayList();
      Connection con = null;
      CallableStatement cstm = null ;
      ResultSet rs = null;
      
     
      
      try{
          con = Conexion.getConexion();
                  
          String sql = "call pa_listadoClientes()";
          cstm=con.prepareCall(sql);
          rs = cstm.executeQuery();
          while(rs.next()){
              
             Cliente cliente = new Cliente();
             cliente.setCli_id(rs.getInt(1));
             cliente.setCli_razSocial(rs.getString(2));
              cliente.setCli_dirFiscal(rs.getString(3));
               cliente.setCli_ruc(rs.getString(4));
              
              
               
             
              listadoClientes.add(cliente);
              
             
              
          }
          System.out.println("Exito carga listadoProductoChartDao");
      }catch(Exception e ){
          System.out.println("Error carga listadoProductoChartDao" + e.getMessage());
          e.printStackTrace();
          
      }finally{
      
          rs.close();
          cstm.close();
          con.close();
          
      }
      return listadoClientes;
    }

    @Override
    public List listadoClientesFrecuentes() throws Exception {
        List listadoClientesFrecuentes = new ArrayList();
      Connection con = null;
      CallableStatement cstm = null ;
      ResultSet rs = null;
      int contadorCli=0;
      
     
      
      try{
          con = Conexion.getConexion();
                  
          String sql = "call pa_ClientesFrecuentes()";
          cstm=con.prepareCall(sql);
          rs = cstm.executeQuery();
          while(rs.next()){
              
             Cliente cliente = new Cliente();
             cliente.setContadorcli(contadorCli);
             cliente.setCli_id(rs.getInt(1));
             cliente.setCli_razSocial(rs.getString(2));
             cliente.setCantidadCli(rs.getInt(3));
              
              
               
             
              listadoClientesFrecuentes.add(cliente);
              
             contadorCli+=2;
              
          }
          System.out.println("Exito carga listadoProductoChartDao");
      }catch(Exception e ){
          System.out.println("Error carga listadoProductoChartDao" + e.getMessage());
          e.printStackTrace();
          
      }finally{
      
          rs.close();
          cstm.close();
          con.close();
          
      }
      return listadoClientesFrecuentes;
    }
    }
    
    
    
  